package com.ibm.wala.mobile.test; import android.content.Intent; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.test.ServiceTestCase; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; import com.ibm.wala.mobile.CallGraphService; import com.ibm.wala.util.collections.Pair; import com.ibm.wala.util.graph.impl.SlowSparseNumberedGraph; public class CallGraphServiceTest extends ServiceTestCase<CallGraphService> { public CallGraphServiceTest() { super(CallGraphService.class); } private Intent makeIntent() { Intent intent = new Intent(); intent.setClass(getContext(), CallGraphService.class); return intent; } @SmallTest public void testStartable() { Intent startIntent = makeIntent(); startService(startIntent); } @SmallTest public void testBindable() { Intent startIntent = makeIntent(); IBinder service = bindService(startIntent); assert service != null; } @MediumTest public void testCallGraph() throws RemoteException { Intent startIntent = makeIntent(); IBinder service = bindService(startIntent); Parcel callData = Parcel.obtain(); Parcel returnData = Parcel.obtain(); String app = "/data/test/com.ibm.wala.core.testdata_1.0.0a.dex"; callData.writeString(app); callData.writeString("LdynamicCG/MainClass"); service.transact(CallGraphService.MAIN_CALL_GRAPH, callData, returnData, 0); returnData.setDataPosition(0); @SuppressWarnings("unchecked") SlowSparseNumberedGraph<Pair<String,Integer>> CG = (SlowSparseNumberedGraph<Pair<String, Integer>>) returnData.readSerializable(); Log.i("CallGraphServiceTest", CG.toString()); callData.recycle(); returnData.recycle(); assert CG != null; } }